
const isEmail = (value) => {
  return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
}
const isPhone = (value) => {
  return /^1[23456789]\d{9}$/.test(value)
}
/**
 * toast中间文本提示
 */
const toast = (msg, icon) => {
  uni.showToast({
    title: msg,
    icon: !icon ? 'none' : 'success',
    duration: 2500
  })
}

/**
 * 加载中
 */
const loading = (o = { title: '加载中' }) => {
  uni.showLoading({
    title: o.title,
  })
}

/**
 * 关闭加载中
 */
const hideloading = () => {
  uni.hideLoading()
}

/**
 * 模态框。确认、取消。有回调
 */
const model = o => {
  uni.showModal({
    title: o.title || '提示',
    content: o.content || '',
    cancelText: o.cancelText || '取消',
    confirmText: o.confirmText || '确定',
    showCancel: o.showCancel == 'no' ? false : true,
    confirmColor: '#EB3C43',
    success: (res) => {
      if (res.confirm) {
        o.success ? o.success() : ''
      } else if (res.cancel) {
        o.fail ? o.fail() : ''
      }
    }
  })
}


/**
 * 页面跳转
 */
const goPage = (url, type = 1, delta) => {
  if (type === 1) {
    uni.navigateTo({        // 保留当前页面，跳转到应用内的某个页面。但是不能跳到 tabbar 页面
      url: "/pages" + url
    })
  } else if (type === 2) { // 关闭当前页面，跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
    uni.redirectTo({
      url: "/pages" + url
    })
  } else if (type === 3) { // 跳转到 tabBar 页面，并关闭其他所有非 tabBar 页面
    uni.switchTab({
      url: "/pages" + url,
    })
  }
  else if (type === 4) {   // 关闭当前页面，返回上一页面或多级页面。
    uni.navigateBack({
      delta: delta
    })
  } else if (type === 5) {
    uni.reLaunch({          // 关闭所有页面，打开到应用内的某个页面
      url: "/pages" + url
    })
  }
}

const isHarmonyOS = () => {
  const sys = uni.getSystemInfoSync();

  // 直接标识检测
  if (sys.osName.toLowerCase() === 'harmonyos') return true;

  // 兼容模式检测 (安卓模式 + 华为设备)
  if (sys.platform === 'android' && /HUAWEI|HONOR/i.test(sys.brand)) {
    // 通过UA二次验证
    return navigator.userAgent.toLowerCase().includes('harmonyos');
  }

  return false;
}

export default {
  toast,
  loading,
  hideloading,
  model,
  goPage,
  isEmail,
  isPhone,
  isHarmonyOS,
}
